﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;
namespace ECOSYSTEMPRESENTACION
{
    public partial class frmProvedor : Form
    {
        public frmProvedor()
        {
            InitializeComponent();
        }
        EmpresaProvedor elProvedor = new EmpresaProvedor();
        EmpresaProvedorBL laEmpresaProvBL = new EmpresaProvedorBL();        
        private EmpresaProvedor ObjetoGuardar() {
            elProvedor.RazonSocialEmpreProv = txtNameProv.Text;
            elProvedor.EmpresaProvRUC = txtRUCProv.Text;
            elProvedor.FecRegEmpreProv = dtpFecReg.Text;
            return elProvedor;
        }
        private Boolean guardarProvedor() {
            EmpresaProvedor elProvedor = ObjetoGuardar();
            laEmpresaProvBL.guardarEmpresaProvedor(elProvedor);
            return true;
        }
        private EmpresaProvedor ActualizarObjeto() {           
            elProvedor.EmpresaProvRUC = txtRUCProv.Text;
            elProvedor.RazonSocialEmpreProv = txtNameProv.Text;
            return elProvedor;
        }
        private Boolean ActualizarProvedor() {
            EmpresaProvedor elProvedor = ActualizarObjeto();
            if (txtNameProv.Text != lblRazSocCopy.Text && txtRUCProv.Text == lblRucCopy.Text)
            {
                laEmpresaProvBL.ActualizarEmpresaProvedor(elProvedor, Convert.ToInt32(lblCodigoProvedor.Text),txtNameProv.Text,"");
            }
            else if (txtNameProv.Text == lblRazSocCopy.Text && txtRUCProv.Text != lblRucCopy.Text) {
                laEmpresaProvBL.ActualizarEmpresaProvedor(elProvedor, Convert.ToInt32(lblCodigoProvedor.Text), "", txtRUCProv.Text);
            }
            else if (txtNameProv.Text != lblRazSocCopy.Text && txtRUCProv.Text != lblRucCopy.Text) {
                laEmpresaProvBL.ActualizarEmpresaProvedor(elProvedor, Convert.ToInt32(lblCodigoProvedor.Text), txtNameProv.Text, txtRUCProv.Text);
            }
            return true;
        }
        private void LimpiarCampos() {
            txtNameProv.Text = "";
            txtRUCProv.Text = "";
            txtSearchProv.Text = "";
        }
        private void ObtenerListaProvedor() {
            if (dgvListaProvedores.DataSource == null) {
                dgvListaProvedores.DataSource = laEmpresaProvBL.ObtenerListaProvedor();
            }
        }
        private int Filtrar_dgvListaprovedor(String columna, String texto, BindingSource filtro, DataGridView data) {
            if (bsFiltro.DataSource == null) return 0;
            try
            {
                String fil = String.Empty;
                fil = "LIKE '" + texto.Trim() + "%'";
                if (fil != String.Empty)
                {
                    fil = "[" + columna + "]" + fil;
                }
                filtro.Filter = fil;
                data.DataSource = filtro.DataSource;
                return filtro.Count;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return 0;
        }
        private void AplicarFiltro() {
            int ret = Filtrar_dgvListaprovedor("RazonSocial",txtSearchProv.Text.Trim(),bsFiltro,dgvListaProvedores);
            if (ret == 0)
            {
                txtSearchProv.BackColor = Color.Red;
            }
            else
            {
                txtSearchProv.BackColor = Color.White;
            }
        }
        private void btnNewProv_Click(object sender, EventArgs e)
        {            
            try
            {
                frmCuentaBanco formCuenta = new frmCuentaBanco();
                formCuenta.MdiParent = this.MdiParent;
                guardarProvedor();     
                if (cbRegCuentaProv.Checked == true)
                {
                                   
                    formCuenta.Show();
                    formCuenta.txtRazSoc.Text = txtNameProv.Text;
                    formCuenta.lblEmpresaProvedorID.Text = Convert.ToString(laEmpresaProvBL.UltimoCodigoRegistradoEmpresaProvedorID());
                    formCuenta.cmbBanco.Select();
                    dgvListaProvedores.DataSource = null;
                }
                else
                {
                    if (MessageBox.Show("REQUIERE REGISTRAR NRO DE CUENTA DE SU PROVEEDOR", "SALIR", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        formCuenta.Show();
                        formCuenta.txtRazSoc.Text = txtNameProv.Text;
                        formCuenta.lblEmpresaProvedorID.Text = Convert.ToString(laEmpresaProvBL.UltimoCodigoRegistradoEmpresaProvedorID());
                        formCuenta.cmbBanco.Select();
                        dgvListaProvedores.DataSource = null;                  
                    }
                    else
                    {
                        MessageBox.Show("PROVEEDOR REGISTRADO SATISFACTORIAMENTE");
                        LimpiarCampos();
                        dgvListaProvedores.DataSource = null;
                    }
                }                
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void rbNewProv_CheckedChanged(object sender, EventArgs e)
        {
            if (rbNewProv.Checked == true)
            {
                LimpiarCampos();
                groupBox3.Enabled = true;
                txtNameProv.Select();
                btnNewProv.Enabled = true;
                cbRegCuentaProv.Checked = false;
                dtpFecReg.Enabled = true;
                cbRegCuentaProv.Enabled = true;
                dgvListaProvedores.ClearSelection();
            }
            else {
                groupBox3.Enabled = false;
                btnNewProv.Enabled = false;
                dgvListaProvedores.ClearSelection();
            }
        }

        private void rbUpdateProv_CheckedChanged(object sender, EventArgs e)
        {
            if (rbUpdateProv.Checked == true)
            {
                LimpiarCampos();
                groupBox2.Enabled = true;
                txtSearchProv.Select();
                ObtenerListaProvedor();
                dtpFecReg.Enabled = false;
                bsFiltro.DataSource = laEmpresaProvBL.ObtenerListaProvedor();                
                btnUpdateProv.Enabled = true;
            }
            else {
                groupBox2.Enabled = false;
                btnUpdateProv.Enabled = false;
                dgvListaProvedores.ClearSelection();
            }
        }

        private void frmProvedor_Load(object sender, EventArgs e)
        {
            rbNewProv.Checked = true;
        }

        private void txtSearchProv_TextChanged(object sender, EventArgs e)
        {
            AplicarFiltro();
        }

        private void dgvListaProvedores_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                int nrofila = Int32.Parse(e.RowIndex.ToString());
                groupBox3.Enabled = true;
                txtNameProv.Text = Convert.ToString(dgvListaProvedores["RazonSocial",nrofila].Value);
                txtRUCProv.Text = Convert.ToString(dgvListaProvedores["RUC",nrofila].Value);
                lblRazSocCopy.Text = Convert.ToString(dgvListaProvedores["RazonSocial", nrofila].Value);
                lblRucCopy.Text = Convert.ToString(dgvListaProvedores["RUC", nrofila].Value);
                lblCodigoProvedor.Text = Convert.ToString(dgvListaProvedores["EmpresaProvedorID",nrofila].Value);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnUpdateProv_Click(object sender, EventArgs e)
        {
            try
            {
                frmProvedor provedor = new frmProvedor();
                frmCuentaBanco formCuenta = new frmCuentaBanco();
                formCuenta.MdiParent = this.MdiParent;
                if (cbRegCuentaProv.Checked == true) {
                    ActualizarProvedor();
                    formCuenta.Show();
                    formCuenta.txtRazSoc.Text = txtNameProv.Text;
                    formCuenta.lblEmpresaProvedorID.Text = lblCodigoProvedor.Text;
                    formCuenta.cmbBanco.Select();
                }
                else
                {
                    ActualizarProvedor();
                    MessageBox.Show("Provedor " + txtNameProv.Text + " actualizado Correctamente");
                    rbUpdateProv.Checked = false;
                    rbNewProv.Checked = true;
                    dgvListaProvedores.DataSource = null;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
    }
}
